str 和 repr
這兩個是Python類別的特殊方法,讓你可以定義物件在打印時的表現。str 是給人看的,repr 是給開發者看的。
class Car:
def init(self, model, year):
self.model = model
self.year = year
def __str__(self):
return f"{self.year} {self.model}"
def __repr__(self):
return f"Car(model={self.model}, year={self.year})"
car = Car("Toyota", 2020)
print(car) # 2020 Toyota
str 讓物件打印出更有意義的內容,而 repr 則通常用於除錯。
屬性裝飾器 (Property Decorator)
@property裝飾器讓你可以將方法變成屬性來訪問,這樣你可以保留方法的靈活性,同時讓使用者的代碼更加簡潔。
class Circle:
def init(self, radius):
self._radius = radius
@property
def area(self):
return 3.14159 * self._radius ** 2
circle = Circle(5)
print(circle.area) # 自動計算並返回面積
這讓你可以像訪問屬性一樣使用方法,卻不用寫 ()。
裝飾器的參數 (Decorators with Arguments)
有時你可能需要傳遞參數給裝飾器,這可以讓你的裝飾器更靈活。
def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def greet(name):
print(f"Hello, {name}!")
greet("Alice") # Hello, Alice! 會被打印三次
這裡我們讓裝飾器接受參數,並用它來控制函數的執行次數。